package com.yuan;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yuan.mapper.TestMapper;
import com.yuan.pojo.AxdTestAppUser;
import com.yuan.pojo.Emp;
import com.yuan.pojo.dto.ExcelDto;
import com.yuan.pojo.dto.IRDataDto;
import com.yuan.service.AxdTestAppUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.UnsupportedEncodingException;
import java.util.*;

@SpringBootTest
class NettyDemo2ApplicationTests extends AnalysisEventListener<ExcelDto>{
    @Test
    void ee(){
        //设置读取的文件地址
        String fileName = "D:\\Spring框架内容学习所有\\Netty_Demo2\\src\\main\\resources\\测试.xlsx";
        //渎职 1.文件名 2.转换实体类 3.监听对象
        ExcelReader reader = EasyExcel.read(fileName, ExcelDto.class,new NettyDemo2ApplicationTests())
                //构建
                .build();
        // 读取Excel文件中的数据
        reader.read();
        // 关闭reader
        reader.finish();
        //创建接收数据的集合
        List<AxdTestAppUser> axdList = new ArrayList<>();
        //拿到读取的数据
        for (int i = 0; i < aList.size(); i++) {
            //判断当前读取的数据不为null
            if (aList.get(i)!=null && aList.get(i).toString().trim().length()!=0){
                //创建接收数据的对象
                AxdTestAppUser axd = new AxdTestAppUser();
                //判断不为null
                if (StringUtils.isNotBlank(aList.get(i).getIdNumber())) {
                    //身份证
                    axd.setIdNumber(aList.get(i).getIdNumber());
                }
                //判断不为null
                if (StringUtils.isNotBlank(aList.get(i).getSex())) {
                    //性别
                    if (aList.get(i).getSex().equals("男")){
                        axd.setSex('0');
                    }else if (aList.get(i).getSex().equals("女")){
                        axd.setSex('1');
                    }else {
                        axd.setSex('2');
                    }
                }
                //判断不为null
                if (StringUtils.isNotBlank(aList.get(i).getName())) {
                    //真实姓名
                    axd.setRealName(aList.get(i).getName());
                    //设置username
                    axd.setUserName(aList.get(i).getName());
                }
                //设置创建时间
                axd.setCreateTime(new Date());
                //设置更新时间
                axd.setUpdateTime(new Date());
                //设置创建人
                axd.setCreateBy("admin");
                //设置修改人
                axd.setUpdateBy("admin");
                //设置审核状态
                axd.setAuditStatus(1);
                //设置审核时间
                axd.setAuditTime(new Date());
                //设置审核人
                axd.setAuditor("admin");
                //保存到集合中
                axdList.add(axd);
            }
        }
        //执行sql

    }

    //创建静态集合
    private static List<ExcelDto> aList = new ArrayList<>();

    //实现eazy excel继承的方法实现重写
    @Override
    public void invoke(ExcelDto data, AnalysisContext context) {
        //拿到数据集合
        aList.add(data);
    }

    //实现eazy excel继承的方法实现重写
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("读取完毕。。。。");
    }




    @Autowired
    AxdTestAppUserService axdAppUserService;

    @Autowired
    TestMapper testMapper;

    @Test
    void ea() throws UnsupportedEncodingException {
        String fileName = "D:\\Spring框架内容学习所有\\Netty_Demo2\\src\\main\\resources\\测试.xlsx";

        List<ExcelDto> lst =  new ArrayList<>();//空数组作为导入模板 可以再写一个方法给数组赋值作为导出模板

        //表头字体颜色map 1为user中索引位置
        Map<Integer,Short> colorMap=new HashMap<>();
        colorMap.put(1, IndexedColors.BLUE.index);

        List<ExcelDto> list = new ArrayList<>();

        EasyExcel.write(fileName, ExcelDto.class).sheet("测试").doWrite(list);
    }






    @Test
    void hahaa(){
        //员工基本数据
        List<Emp> empList = testMapper.selectEmpAll();
        //创建数据添加集合
        List<AxdTestAppUser> axdList = new ArrayList<>();
        //遍历数据
        for (int i = 0; i < empList.size(); i++) {
            AxdTestAppUser axd = new AxdTestAppUser();
            //判断当前数据不为null
            if (empList.get(i)!=null && empList.get(i).toString().trim().length()!=0){
                //判断不为null
                if (StringUtils.isNotBlank(empList.get(i).getEmpEmail())) {
                    //邮箱
                    axd.setEmail(empList.get(i).getEmpEmail());
                }
                //判断不为null
                if (StringUtils.isNotBlank(empList.get(i).getEmpIdNum())) {
                    //身份证
                    axd.setIdNumber(empList.get(i).getEmpIdNum());
                }
                //判断不为null
                if (StringUtils.isNotBlank(empList.get(i).getEmpContTel())) {
                    //电话
                    axd.setPhoneNumber(empList.get(i).getEmpContTel());
                }
                //判断不为null
                if (StringUtils.isNotBlank(empList.get(i).getEmpSex())) {
                    //性别
                    if (empList.get(i).getEmpSex().equals("男")){
                        axd.setSex('0');
                    }else if (empList.get(i).getEmpSex().equals("女")){
                        axd.setSex('1');
                    }else {
                        axd.setSex('2');
                    }
                }
                //判断不为null
                if (StringUtils.isNotBlank(empList.get(i).getEmpName())) {
                    //真实姓名
                    axd.setRealName(empList.get(i).getEmpName());
                    //设置username
                    axd.setUserName(empList.get(i).getEmpName());
                }
                //设置创建时间
                axd.setCreateTime(new Date());
                //设置更新时间
                axd.setUpdateTime(new Date());
                //设置创建人
                axd.setCreateBy("admin");
                //设置修改人
                axd.setUpdateBy("admin");
                //设置审核状态
                axd.setAuditStatus(1);
                //设置审核时间
                axd.setAuditTime(new Date());
                //设置审核人
                axd.setAuditor("admin");
                //添加到集合中
                axdList.add(axd);
            }
        }
        //执行添加语句
        axdAppUserService.saveBatch(axdList);
    }

}
